package com.netty.io.nio;

import java.io.FileOutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

/**
 * 将一个字符串的内容通过nio写入到D盘的txt文件里
 * nio模型里，一个channel对应一个buffer，buffer可以读和写
 * 先将str的数据通过byteBuffer写入缓冲区
 * 再将buffer的数据写入channel
 * 最后fileOutputStream包含了channel。channel将数据通过输出流写入文件
 * */
public class NioOutputExample {

    public static void main(String[] args) throws Exception {

        String str = "这是一个nio的demojksj";

        FileOutputStream fileOutputStream = new FileOutputStream("/Users/xiaoqi/nio.txt");

        //通过FileOutputStream获取这个流的一个channel
        FileChannel channel = fileOutputStream.getChannel();

        ByteBuffer byteBuffer = ByteBuffer.allocate(1024);

        //将数据写入buffer
        byteBuffer.put(str.getBytes());

        //转换buffer读写关系，上面是往buffer里写数据，执行flip后，读取buffer的数据写入channel
        byteBuffer.flip();

        channel.write(byteBuffer);

        fileOutputStream.close();
    }
}
